package api.collection;

import java.util.ArrayList;
import java.util.List;

public class SubListDemo {
    public static void main(String[] args) {
       /*
       List提供了获取子集的操作：
       List subList()含头不含尾
        */
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i * 10);
        }
        System.out.println(list);
        List<Integer> subList = list.subList(3, 8);//获取下标3到7的子集
        System.out.println(subList);
        List<Integer> subList1 = list.subList(5, 9);//获取5到8的子集
        System.out.println(subList1);
        //子集扩大10倍
        for (int i = 0; i < subList.size(); i++) {
            subList.set(i, subList.get(i) * 10);
        }
        System.out.println("subList:" + subList);//subList:[300, 400, 500, 600, 700]
        //注意：对子集的操作就是对原集合对应的元素操作
        System.out.println("list:" + list);//list:[0, 10, 20, 300, 400, 500, 600, 700, 80, 90]
        list.set(3, 1000);//将原集合下标为3的元素修改为1000
        System.out.println("subList" + subList);//subList[1000, 400, 500, 600, 700]

        //list.remove(0);//将原集合下标为0的元素删掉
        System.out.println("list:"+list);//list:[10, 20, 1000, 400, 500, 600, 700, 80, 90]
        //原集合长度修改之后，子集将不能再进行任何操作，操作则发声异常，但可以重新获取子集
        //就是不能对原集合进行删或加的操作，但是能对子集操作
        subList.remove(0);//将子集下标为0的元素删掉
       // list.add(0,250);
        System.out.println("list:"+list);
        System.out.println("subList:"+subList);

    }
}
